/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.objetos;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
/**
 *
 * @author KOMATSU
 */
public class PessoaMetodos {
    private Pessoa pessoa = new Pessoa();
    
    private String mensagem = "";
    
    private List listaPessoas = new ArrayList();
    
    private String filtro = "";
    
    /**
     *
     * Metodo Buscar Pessoas
     * Pega Pessoas do banco
     * de acordo com o filtro
     * feito na sql
    */
    
    public void buscarPessoas() {
        Conexao con = new Conexao();
        try {
            
            con.inicia();
            String query = "SELECT * FROM bars.pessoa WHERE upper(NOME) like upper('"+filtro+"%') ORDER BY nome";
            ResultSet rs = con.executa(query);
            listaPessoas.clear();
            while (rs.next()) {
                Pessoa p = new Pessoa();
                p.setCpf(Long.toString(rs.getLong("cpf")));
                p.setNome(rs.getString("nome"));
                p.setEndereco(rs.getString("endereco"));
                p.setTelefone(Long.toString(rs.getLong("tel")));
                p.setIdPessoa(Integer.toString(rs.getInt("idPessoa")));
                p.setEmail(rs.getString("email"));
                listaPessoas.add(p);
            }
            
            rs.close();
        } catch (Exception e) {
            this.setMensagem(e.getMessage());
            System.out.println(e.getMessage());
        } finally {
            try {
                con.encerra();
            } catch (SQLException closeE) {
                this.setMensagem(closeE.getMessage());
            }
        }
    }
    
    /**
     *
     * Metodo Buscar 1 Pessoa
     * Pega 1 Pessoa do banco
     * @param id - id da pessoa selecionado
    */
    
    public void buscarPessoaId(String id) {
        Conexao con = new Conexao();
        try {
            
            con.inicia();
            String query = "SELECT * FROM bars.pessoa WHERE idpessoa= "+id+" ORDER BY nome";
            ResultSet rs = con.executa(query);
            while (rs.next()) {
                Pessoa p = new Pessoa();
                p.setCpf(Long.toString(rs.getLong("cpf")));
                p.setNome(rs.getString("nome"));
                p.setEndereco(rs.getString("endereco"));
                p.setTelefone(Long.toString(rs.getLong("tel")));
                p.setIdPessoa(Integer.toString(rs.getInt("idPessoa")));
                p.setEmail(rs.getString("email"));
                setPessoa(p);
            }
            
            rs.close();
        } catch (Exception e) {
            this.setMensagem(e.getMessage());
            System.out.println(e.getMessage());
        } finally {
            try {
                con.encerra();
            } catch (SQLException closeE) {
                this.setMensagem(closeE.getMessage());
            }
        }
    }

   /**
     *
     * Metodo Buscar Pessoa
     * Cadastra novo pessoa no banco
    */
    
    
    public void cadastrarPessoa() {
        Conexao con = new Conexao();
        try {
            con.inicia();
            String query = "INSERT INTO bars.pessoa (cpf,nome,endereco,tel,email)"
            +"VALUES('" + pessoa.getCpf() + "','" + pessoa.getNome() + "','" + pessoa.getEndereco()
            +"','" + pessoa.getTelefone() + "','" + pessoa.getEmail()+ "')";
            con.atualiza(query);
        } catch (Exception e) {
            this.setMensagem(e.getMessage());
        } finally {
            try {
                con.encerra();
            } catch (SQLException closeE) {
                this.setMensagem(closeE.getMessage());
            }
        }
    }
    
    /**
     *
     * Metodo Editar Pessoa
     * Atualiza pessoa existente no banco
    */
    
    public void editarPessoa() {
        Conexao con = new Conexao();
        try {
            con.inicia();
            String query = "UPDATE bars.pessoa"
                    +" SET cpf = "+pessoa.getCpf() + ", nome = '"+pessoa.getNome() +"', endereco ='"+ pessoa.getEndereco()
                    +"', tel = "+ pessoa.getTelefone() +",email = '"+ pessoa.getEmail()+"'"
                    +" WHERE idpessoa = "+pessoa.getIdPessoa();
            
            con.atualiza(query);
        } catch (Exception e) {
            this.setMensagem(e.getMessage());
        } finally {
            try {
                con.encerra();
            } catch (SQLException closeE) {
                this.setMensagem(closeE.getMessage());
            }
        }
    }
    
    /**
     *
     * Metodo Remover Pessoa
     * Remove pessoa existente no banco
    */
    
    public void removerPessoa() {
        Conexao con = new Conexao();
        try {
            con.inicia();
            String query = "DELETE FROM bars.pessoa"
                    +" WHERE idpessoa = "+pessoa.getIdPessoa();
            
            con.atualiza(query);
        } catch (Exception e) {
            this.setMensagem(e.getMessage());
        } finally {
            try {
                con.encerra();
            } catch (SQLException closeE) {
                this.setMensagem(closeE.getMessage());
            }
        }
    }
    
    
    public List getListaPessoas() {
        return listaPessoas;
    }

    public void setListaPessoas(List listaPessoas) {
        this.listaPessoas = listaPessoas;
    }

    public String getMensagem() {
        return mensagem;
    }

    public void setMensagem(String mensagem) {
        this.mensagem = mensagem;
    }

    public Pessoa getPessoa() {
        return pessoa;
    }

    public void setPessoa(Pessoa pessoa) {
        this.pessoa = pessoa;
    }

    public String getFiltro() {
        return filtro;
    }

    public void setFiltro(String filtro) {
        this.filtro = filtro;
    }
    
}
